package com.ljk.util.string;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

/**
 * url转码解码<br />
 * 这里使用的库只是java的默认实现,遵循的是 application/x-www-form-urlencoded 标准<br />
 * 如果要使用最新的 RFC 3986 标准,<br />
 * 可以使用 Apache Commons Codec 的 URLCodec 类<br />
 * 或者使用 hutool 工具包里的 URLEncodeUtil 类 <br />
 *
 * @author ljk
 * @since 2025/3/27 21:11
 */
public class URLUtil {
    public static String urlEncode(String url) {

        return urlEncode(url, StandardCharsets.UTF_8);
    }

    public static String urlEncode(String url, Charset charset) {
        try {
            return URLEncoder.encode(url, charset.name());
        } catch (UnsupportedEncodingException | RuntimeException e) {
            throw new RuntimeException("url encode error", e);
        }
    }

    public static String urlDecode(String url) {
        return urlDecode(url, StandardCharsets.UTF_8);
    }

    public static String urlDecode(String url, Charset charset) {
        try {
            return URLDecoder.decode(url, charset.name());
        } catch (UnsupportedEncodingException | RuntimeException e) {
            throw new RuntimeException("url decode error", e);
        }
    }

}
